#ifndef __SYSTEM_EVENTS_INTERFACE_HEADER__
#define __SYSTEM_EVENTS_INTERFACE_HEADER__



class SystemEvents
{
	static bool g_running;
	static bool g_deviceChange;

public:
	static bool	Update();
	static bool HaveDeviceChange();

	static LRESULT CALLBACK WinEventHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); 
};


/*!

*/
class DirectoryFilter
{
	typedef std::vector<std::string> LstFiles;
	LstFiles	m_lstFiles;

public:
	DirectoryFilter(){}
	~DirectoryFilter(){}

	bool Initialize(const std::string& strPath, const std::string& strMask, bool bFiles, bool bDirectories);

	uint32				Count() const			{ return (uint32)m_lstFiles.size();	}

	const std::string&	operator[](int i) const	{ return m_lstFiles[i];				}

	typedef LstFiles::iterator Iterator;

	Iterator		Begin()						{ return m_lstFiles.begin();		}
	Iterator		End()						{ return m_lstFiles.end();			}

};


#endif
